Copyright, 1993, 1994, Microcom Systems, Inc. A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to interfaces between data communications equipment (DCE) and data terminal equipment (DTE), and more particularly to a high performance modem for connection with a computerized system through a parallel communications interface.
As used herein, data terminal equipment (DTE) is intended to refer to any data terminal device, including computerized systems such as computer peripherals, personal computers, mini and mainframe computer systems and terminals. Data communication equipment (DCE) is intended to refer to any type of a computer peripheral that can benefit from the high speed exchanges of data and status with DTE. This includes printers, plotters, and scanners as well as other DTE devices such as personal computers. Other types of DCEs include analog and digital communication devices for converting or encoding data transmitted through a transmission medium or communications channel to a remote site and for decoding data received through the medium from the remote site. The DCE usually is in the form of a modem, a device for modulating signals for transmission over a transmission medium to a remote site, and demodulating signals received through the medium from a remote site.
A serial interface is a data transmission or communications link between two DTEs, or two DCEs, or a DCE and a DTE. Data travels over a single transmission line from transmitter to receiver one bit at a time. Most personal computers and commercially available modems typically each include a serial port by which the devices can be connected, so as to form a serial interface, and through which data can be serially transferred. A typical bidirectional, serial interface includes at least three lines, one for transmission of data in one direction (from the computer to the modem), one for transmission of data in the other direction (from the modem to the computer) and a ground reference. Additional lines may be provided to support more efficient handshaking protocols whereby the two systems electrically connect and assure each other that they can understand one another before they transfer data between each other. The Electronic Industries Association (EIA) RS-232 Specification and ITU-T (formerly CCITT) V.24 are the most frequently used examples of industry standard serial interface specifications which define the handshake protocol, connector pin assignments and signal levels for a serial interface.
A parallel interface is a communications link between two DTEs, two DCEs, or a DCE and a DTE, but typically between computers and printers. Data travels in data units over more than one line from transmitter to receiver, with at least two [data] bits being sent at a time. In some cases the data is sent a byte at a time (in most personal computers a byte is 8 bits). However, the data can be sent in groups of bits, each less than a byte (e.g., a xe2x80x9cnibblexe2x80x9d which can be one-half a byte, or four bits), or in groups of bits, each greater than a byte (e.g., a byte and a nibble at a time). In the latter two instances the bytes are divided up into the individual data units for transmission, transmitted and then reassembled as bytes. In all these cases the transfer is considered to be a parallel transfer, even though the data unit may be something other than a byte of data. A typical parallel interface, as used to interface a personal computer with a printer, includes eight (unidirectional) output data lines for transmitting data from the computer to the printer, four status output lines for communicating, status to the printer and five status input lines for providing status data from the printer to the computer. In some parallel interfaces, the data lines are bidirectional, allowing data to be transferred to, as well as from, the computer via the eight data lines.
Various types of DCEs are used to transmit and receive data over a transmission medium, in the form of a communications channel or link. For example, the medium can be air in the case of cellular modems, or communication wires or cables, in the case of standard telephone line modems.
The data terminal equipment is typically connected to the data communication equipment when it is desirable to transmit data to or receive data from a remote site over the transmission medium. The DTE generates the data to be transmitted over the communications medium by the DCE to which the DTE is connected, and/or receives the data received by the DCE from the medium. Modems are defined by current standards to use serial interfaces as specified in the (EIA) RS-232 and the ITU-T V.24 Specifications. Modems have not been defined to have other types of interfaces such as the parallel interface of a DTE. Presently, commercially available modems transmit data over standard voice grade telephone lines at maximum rates of 14,400 and 28,800 bits per second (bps) using sophisticated handshaking and error correcting protocols. However, utilizing data compression, modems are capable of effectively transmitting and receiving data across a communications channel at rates as high as the maximum DTE rate, typically 115,200 bps. These protocols and data compression techniques are typically defined by industry standards such as the ITU-T Series Specifications and the Microcom Network Protocol (MNP). However, as will become more evident hereinafter, the operation of the DTE, and in particular the manner in which data is transferred from the DTE to a DCE to which it is connected, can limit the throughput of data between the DTE and the DCE to less than the maximum DTE rate, and hence limit the speed of the DCE.
More particularly, all commercially available modems sold prior to the present invention are believed to be serial communications devices, i.e., they communicate with the corresponding DTE, as well as any remote modem over a communication medium, by transmitting and receiving data through a serial interface. The DTE is accordingly usually connected through a serial port over a serial line to the modem. Most DTE process parallel data, a xe2x80x9cbytexe2x80x9d at a time. Thus, when transmitting data to a remote DCE, the DTE must break each byte into single bits which are transferred through a serial port to the modem over a serial line. The data is then sent using a standardized asynchronous framing scheme to a remote modem which assembles the bits of data together based on the same framing scheme before transferring the data over a serial line to the remote DTE. These modems also transmit data to and receive data from the DTE in a similar serial fashion. Typically, the electrical connections and handshake for this data transfer protocol are described in the EIA RS-232 or ITU-T V.24 specifications.
Usually, the DTE has a serial input-output port including a Universal Asynchronous Receiver Transmitter (UART) which sends and receives serial data to and from a modem. The UART provides the hardware interface between the serial port connector and the computer""s control processing unit (CPU). When it receives data, it assembles the bits of data into bytes of data and notifies the CPU that a byte of serial data has been received.
In operation, in a typical personal computer, an unbuffered UART receives data one bit at a time until an asynchronously framed byte (8 bits of data, 1 start bit and 1 stop bit) is received. The UART then signals the CPU of the personal computer (via a serial interrupt) to indicate that it has received a byte of data. If the CPU does not service the serial interrupt before the next byte of data is received, the previous byte of data is over written and the UART indicates that an overrun error had occurred. Under ordinary conditions, the data is lost. The only way to avoid losing data is to utilize a higher level protocol or software layer which upon detecting the error can negotiate with the transmitting DTE at the remote end to retransmit the lost data or the block containing the lost data. In spite of these higher level protocols, even a small number of overrun errors can significantly degrade the performance the communications link. If the CPU is forced to service a serial interrupt for each byte of data at very high data rates, the frequency of serial interrupts that will occur can account for a significant amount of the CPU time causing the operating system to grind to a halt or make it so sluggish that it will be impractical.
Unfortunately, with DTE data rates approaching 115,200 bps, many personal computers have trouble keeping up because the interrupt driven communication port device drivers and applications have to service an interrupt for each character received. In addition, the interrupt latency on the receive side can cause a loss of data due to overruns. With the serial communications ports in most of today""s personal computers interrupt driven, today""s multitasking operating systems cannot service the serial communication interrupts fast enough to keep up with today""s high speed modems to avoid losing data. Consequently, the communication link between the modem and the personal computer under these operating systems is limited to about 9,600 to 38,400 bps (depending upon CPU speed and other operating environment characteristics). Since 28,800 bps modems using data compression can effectively communicate at 115,200 bps, this is the limiting factor in utilization of the full bandwidth of these devices.
One solution to this problem has been the development of an improved UART with a buffer that holds up to 16 bytes of data. This enables the UART to receive and hold up to 16 bytes of data before it begins losing data to overrun errors. However, the majority of installed computers do not have this improved UART and cannot be upgraded, therefore, this solution is not available to many of the millions of computers currently in use. In addition, even the improved UART with 16 bytes of buffering capability does not guarantee that data will not be lost. Under certain conditions, where the operating system is busy servicing other devices, data can still be lost because there is no handshake between the DTE and the DCE.
With continuing developments in modem technology throughput limitations of using the serial port of the DTE presents an ever increasing problem. Even with today""s high speed microprocessors, such as Intel""s Pentium and the IBM/Motorola/Apple Power PC, the system cannot process the serial data fast enough. This problem is especially significant when running today""s multitasking operating systems such as Windows, OS/2, Unix, and System 7. In addition, with the development of Graphical User Interfaces (GUIs), remote computing and the advance of Multimedia Technology, the ability to transmit data between a modem and a computer at speeds over 9,600 bps under these operating systems will be extremely desirable.
Accordingly, it is an object of this invention to provide a high performance interface between data communications equipment and data terminal equipment.
It is another object of the invention to provide a high performance interface between DTE and DCE irrespective of the operating system of the DTE.
Another object of the invention is to provide a high performance interface which transmits data in a non-serial manner between DTE and DCE.
Yet another object of the invention is to provide a high performance interface which transmits data between DTE and DCE in blocks at controlled intervals.
Still another object of the present invention is to transmit data bidirectionally between a DTE and DCE through the standard parallel port of the DTE.
And yet another object of the present invention is to provide an improved DCE for bidirectionally transmitting data in a non-serial manner between the standard parallel interface of a DTE, without modifying the hardware of the DTE.
And still another object of the present invention is to create a virtual link through which data can be transferred so as to bypass a serial link between a modem and computer system without effecting the application and operating programs running on the computer system.
And yet another object of the present invention is to transfer data more efficiently between a modem and a computerized system when using an interrupt driven communication port device driver in the computerized system.
And still another object of the present invention is to prevent the loss of data transferred between a modem and computerized system due to data overruns.
Other objects and advantages of the present invention will become readily apparent to those skilled in this art from the following detailed description wherein a preferred embodiment is shown and described, simply by way of illustration of the best mode of the invention. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various respects, all without departing from the invention. Accordingly, the drawings and description are to be regarded as illustrative in nature, and not restrictive.
The invention is directed to an improved, DCE device such as a modem for transmitting and receiving parallel data. In accordance with the present invention, a data communications system is provided. The system is of the type having its own CPU with memory and is modified to include a parallel communications system, including a parallel port, for connection with the DTE through a standard parallel port normally used for transferring data to a printer. The DTE is modified so that the parallel port is used to transmit data to and from the parallel port of the DCE, without modifying the hardware of the DTE. A communications protocol is described for use with the DCE and DTE for effectively and efficiently transmitting data at high speeds between the two devices through the parallel interface.
In the preferred embodiment, in addition to the parallel communications system, the data communications system also includes two serial communications devices. One serial communications device is coupled to one or more signal processors and is used to handle communications i.e., the transmission and receipt of data, over the communication channel. The other serial communications device and the parallel communications system are used to handle the communications with the DTE through a serial and parallel port, respectively, so as to define corresponding serial and parallel interfaces.
The data communications system includes means for determining whether the serial or parallel interface with the DTE is used for the transmission of data, based on predetermined preferences established through the communications protocol. The established communications protocol makes it preferable to utilize the parallel interface because it is capable of communicating at higher data rates than the serial interface. If the parallel interface does not exist (the connection is not made between the parallel ports of the data communications system and DTE), or data is not being transmitted effectively through the parallel interface, the data communications system will fall back to the serial interface if it exists. The data communications system also includes software for emulation of the various handshaking protocols used in a serial interface, when communicating over the parallel interface.
In accordance with the preferred embodiment of the present invention, the system also includes a software device driver for enabling the DTE to communicate with the data communications system either through the serial interface or the parallel interface depending upon various conditions determined by the communications protocol. Typically, the DTE will be a personal computer comprising at least one serial communication port and one parallel port and application software requiring a link with the data communications system. The software driver performs several functions. In the case of the parallel interface, it initializes the parallel printer port of the DTE, redirects the data such that the operating system and/or the application software running on the computer recognizes that the communications port is available and, if necessary, fools the DTE into thinking that the communications port is a serial port. In this configuration, the software driver interacts with the data communications system such that it appears to be a serial device to the operating system and the application software running on the DTE.
Another function of the software driver is to implement burst mode communications with the data communications system. Burst mode communications reduce the CPU overhead associated with conventional serial communications by receiving more than one byte of data at a time. Burst mode transfers are performed in a controlled environment whereby a predetermined number of data units are transmitted in a given interval. For example, the data communications system, in this case the modem, will receive and hold a predetermined number of data bytes from a remote DTE. The data communications system will then signal the DTE to initiate the transfer and then transmit blocks of data in bursts at as fast a rate as possible.
On the DTE side, the software driver will buffer the data from the operating system or the application software until it has a predetermined number of data units. The software driver will then signal the DCE to initiate the transfer and then transmit the blocks of data in bursts at as fast a rate as possible. This occurs transparent to the operating system and the application software running on the DTE.